#ifndef INPUTFUNC_H
#define INPUTFUNC_H

#include <QDialog>
#include <QSet>
#include <any>
#include "myfunc.h"
#include "analyse.h"
#include <QMessageBox>

namespace Ui {
class Inputfunc;
}

class Inputfunc : public QDialog
{
    Q_OBJECT

    friend class Addfunc;//addfunc访问inputfunc的ui界面
public:
    explicit Inputfunc(QWidget *parent = nullptr);
    ~Inputfunc();
    bool eventFilter(QObject * obj, QEvent * e);//事件过滤器
    bool xx,yy;
private slots:
    void backspace();//用于删除的槽函数

    void btnClick();//用于传出用户输入的函数解析式
signals:
    void onOK(std::string& expr,std::vector<std::any> &  post);//解析式和逆波兰表达式
private:
    Ui::Inputfunc *ui;

    void Filter(const QString& in);//限制输入
    int brackets;//右括号个数
    //静态成员变量声明，QSet容器，存储了一组字符串类型的数据
    static QSet<QString> num;
    static QSet<QString> xy;//其他符号
    static QSet<QString> func;
    static QSet<QString> opt;
    static QSet<QString> num1;//用于自动添加*的值
};

#endif // INPUTFUNC_H
